package queue

import (
	"fmt"
	"time"
	"yunj/pkg/yunj/core/enum/queueenum"
	"yunj/pkg/yunj/core/queue"
)

// 实现QueueInterface接口
type tests struct {
	queue.Queue
}

var Tests = func() *tests {
	queue := &tests{}
	queue.Queue.InitQueueInstance(queue)
	return queue
}()

// 队列名称
func (q *tests) Name() string {
	return "tests"
}

// 队列描述
func (q *tests) Desc() string {
	return "测试队列"
}

// 开启的协程数量
func (q *tests) CoroutineNum() int {
	return 1
}

// 每次获取消费的消息数量
func (q *tests) MessageNum() int {
	return 2
}

// 尝试次数
// 指定消息咋处理异常时的最大尝试次数（默认3次）
func (q *tests) Tries() int {
	return 3
}

// 消息消费处理超时时间
func (q *tests) Timeout() time.Duration {
	return 10 * time.Second
}

// 定义默认的处理状态（没有配置数据库状态时应用）
func (q *tests) DefaultHandleStatus() uint8 {
	return queueenum.STATUS_PAUSED
}

// 消息消费处理函数
func (q *tests) Handler(messages []string) {
	fmt.Println("测试队列消费中...", messages)
}
